﻿//------------------------------------------------------------------------------
// ╭─────────────────────────────╮
// │ ╭─╮     ╭─╮              TM │   ╠═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╣
// │ │ │     │ │                 │                                           ☺  
// │ │ ╰───╮ │ │ ╭─────╮ ╭─────╮ │     Name:Wedn.Net 用户登录异步请求处理程序 ♮ ♪ ♩
// │ │ ╭─╮ │ │ │ │ ╭─╮ │ │ ╭─╮ │ │                                    ♫ ♭      
// │ │ ╰─╯ │ │ │ │ ╰─╯ │ │ ╰─╯ │ │     Author:iceStone               ♬ ♪       
// │ └─────╯ └─╯ ╰─────╯ ╰───╮ │ │     Chinese:汪磊                              
// │                     ┌───╯ │ │                                              
// │                     ╰─────╯ │   ╠═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╬═╣
// ╰─────────────────────────────╯                                              
//------------------------------------------------------------------------------
using System;
using System.Web;
using System.Web.SessionState;
using Wedn.Net.Common;
using Wedn.Net.Model;
using Wedn.Net.UI.Handlers;
using Wedn.Net.Utility;

namespace Wedn.Net.Web.Handlers
{
    /// <summary>
    /// 用户登录异步请求处理程序
    /// </summary>
    public class LoginAjax : FrontBaseHandler, IRequiresSessionState
    {
        HttpContext _context;
        /// <summary>
        /// 请求处理方法
        /// </summary>
        /// <param name="context">HTTP上下文</param>
        public override void ProcessRequest(HttpContext context)
        {
            _context = context;
            context.Response.ContentType = "text/plain";
            if (RequestHelper.QueryString("action") == "logout")
            {
                SessionHelper.RemoveSession("CurrentUser");
                CookieHelper.RemoveCookie("URM");
                context.Response.Redirect("/Login");
            }
            var uid = RequestHelper.FormString("user_login");
            var pwd = RequestHelper.FormString("user_password");
            if (string.IsNullOrEmpty(uid) || string.IsNullOrEmpty(pwd))
                //CheckLogin();
                context.Response.End();
            else
            {
                //2013年4月1日 18:30:55取消登录验证码, 原因:增强客户体验
                //string vCode = RequestHelper.FormString("validate_code");
                //string sessionCode = Session["ValidateCode"] == null ? string.Empty : Session["ValidateCode"].ToString();
                //Session["ValidateCode"] = null;
                //if (sessionCode == vCode)
                //{
                var userManager = BLLFactory.BLLFactory.Instance.UserManager;
                User currentUser = null;
                var res = LoginResult.Awaiting;
                try
                {
                    res = userManager.Login(uid, pwd, out currentUser);
                }
                catch (Exception ex)
                {
                    ResponseStr(ex.Message);
                }
                switch (res)
                {
                    case LoginResult.Success:
                        //if (context.Session["CurrentUser"] == null)
                        //    context.Session["CurrentUser"] = currentUser;
                        SessionHelper.AddSession("CurrentUser", currentUser);
                        if (RequestHelper.FormString("ck_me") == "true")
                            CookieHelper.SetCookie("URM", userManager.GetEncryptUserInfo(currentUser));
                        //HttpCookie cookie = new HttpCookie(Config.SitePrefix + "URM", cValue);
                        //cookie.Expires = DateTime.Now.AddMonths(1);
                        //context.Response.Cookies.Add(cookie);
                        ResponseStr("Success");
                        break;
                    case LoginResult.PasswordError:
                        ResponseStr("PasswordError");
                        break;
                    case LoginResult.NonExistent:
                        ResponseStr("NonExistent");
                        break;
                    case LoginResult.Awaiting:
                        ResponseStr("Awaiting");
                        break;
                }
            }
        }

        #region MyRegion
        ///// <summary>
        ///// 校验用户是否已经登录
        ///// </summary>
        //private void CheckLogin()
        //{
        //    //var currentUser = SessionHelper.GetSession<User>("CurrentUser");
        //    ////User CurrentUser = context.Session["CurrentUser"] as User;
        //    //if (currentUser != null)
        //    //    ResponseStr("islogin");
        //    //else
        //    //    CheckCookies();
        //    var userManager = BLLFactory.BLLFactory.GetBLLFactory().UserManager;

        //    if (userManager.CheckLogin())
        //        ResponseStr("islogin");
        //}

        ///// <summary>
        ///// 校验cookie登录
        ///// </summary>
        //private void CheckCookies()
        //{
        //    #region old
        //    ////HttpCookie cookie = context.Request.Cookies[Config.SitePrefix + "URM"];
        //    //string cookie = CookieHelper.GetCookie("URM");
        //    //if (!string.IsNullOrEmpty(cookie))
        //    //{
        //    //    //UserManager userManager = new UserManager();
        //    //    IUserManager userManager = BLLFactory.BLLFactory.GetBLLFactory().UserManager;
        //    //    User cookieUser = userManager.GetDecryptUserInfo(cookie);
        //    //    if (cookieUser != null)
        //    //    {
        //    //        User currentUser = null;
        //    //        LoginResult res = userManager.Login(cookieUser.Login, cookieUser.Password, out currentUser, true);
        //    //        if (res == LoginResult.Success)
        //    //        {
        //    //            //审核通过
        //    //            if (context.Session["CurrentUser"] == null)
        //    //                context.Session["CurrentUser"] = currentUser;
        //    //            ResponseStr("islogin");
        //    //        }
        //    //    }
        //    //    else
        //    //    {
        //    //        //密码被修改了.清除cookie
        //    //        //context.Response.Cookies[Config.SitePrefix + "URM"].Expires = DateTime.Now.AddDays(-1);
        //    //        CookieHelper.RemoveCookie("URM");
        //    //    }
        //    //} 
        //    #endregion
        //    var userManager = BLLFactory.BLLFactory.GetBLLFactory().UserManager;
        //    if (userManager.CookieLogin())
        //    {
        //        ResponseStr("islogin");
        //    }
        //} 
        #endregion
    }
}